
// 交换下标值
export function swap(arr: number[], i: number, j: number){
    [arr[i], arr[j]] = [arr[j], arr[i]];
}
// 判断是否排序成功
export function isSorted(arr: number[]): boolean {
    for (let i = 0; i < arr.length - 1; i++) {
        if (arr[i] > arr[i + 1]) return false;
    }
    return true;
}

// 测试排序
type SortAlgoFn = (arr: number[]) => number[];
export function testSort(sortFn: SortAlgoFn){
    // 1. 随机长度为10的数组
    let arr = Array.from({ length: 10 }, () => Math.floor(Math.random() * 200));
    console.log('排序前数组：', arr);
    const newArr = sortFn(arr);
    console.log('排序后数组：', newArr);
    console.log('排序结果：', isSorted(newArr));
    
}

// 排序方法时间测试计算
export function measureSort(sortFn: SortAlgoFn, num: number) {
    // 生成指定大小的随机数组
    const arr = Array.from({ length: num }, () => Math.floor(Math.random() * num * 10));
    
    // 记录开始时间
    const startTime = performance.now();
    
    // 执行排序算法
    const sortedArr = sortFn(arr);
    
    // 记录结束时间
    const endTime = performance.now();
    
    // 计算执行时间（毫秒）
    const timeElapsed = endTime - startTime;
    console.log(`排序 ${num} 个元素耗时：${timeElapsed.toFixed(3)} ms`);
    
}